perm filename U11[1,BGB]2 blob
sn#145812 filedate 1975-02-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00022 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 /NOTATION:
C00005 00003 LOC NXT *SOURCE MODE 0 (REGISTER) GET SOURCE DATA
C00008 00004 _____________________________________________________________________
C00010 00005 LOC NXT * SOURCE BYTE ODD
C00012 00006 LOC NXT * DEST, MODE 0 (REGISTER), GET DEST DATA, OP, AND REPLACE
C00015 00007 LOC NXT * DEST, MODE 1 (REG.DEFERRED) GET DEST DATA, OP, AND REPLACE
C00017 00008
C00018 00009 LOC NXT * DESTINATION MODE 0, BYTE
C00020 00010
C00021 00011
C00022 00012
C00023 00013 LOC NXT * JMP
C00025 00014 LOC NXT * RTS
C00026 00015 LOC NXT * WAIT
C00027 00016 LOC NXT * EMT TRAP (VECTOR LOC=30)
C00028 00017 LOC NXT * TRAP (VECTOR LOC=34)
C00029 00018 LOC NXT * CONSOLE EXAMINE SWITCH - FIRST TIME (DON'T INC P[17])
C00031 00019
C00032 00020
C00033 00021
C00034 00022
C00035 ENDMK
C⊗;
/NOTATION:
/ 1. MICRO ROUTINES BEGIN WITH A COMMENT PREFIXED BY "*".
/ 2. ALL OTHER COMMENTS ARE PREFIXED BY SLASH "/".
/ 3. R[N] REFERS TO SCRATCH PAD REGISTER N,
/ R[7] IS ALSO REFERRED TO AS "PC".
/ 4. R[S] REFERS TO THE REGISTER SPECIFIED IN THE SOURCE FIELD
/ OF THE CURRENT INSTRUCTION, IR<8:6>
/ R[D] REFERS TO THE REGISTER SPECIFIED IN THE DESTINATION FIELD
/ OF THE CURRENT INSTRUCTION, IR<2:0>
/ 5. K[N] REFERS TO A LOCATION OF THE CONSTANTS CHIP THAT CONTAINS N.
/ 6. "BUT" STANDS FOR "BRANCH ON MICRO TEST".
LOC NXT * INSTRUCTION FETCH
062 053 F-1 BA←PC; DATI
053 365 F-2 B←PC+2
365 364 F-3 PC←B; CKOFF
364 061 F-4 B,IR←UNIBUS DATA
061 001 F-5 B←B SEX; BUT IR DECODE
/ IF DOUBLE OP INST GOTO S0-1 THRU S7-1 DEPENDING ON SOURCE MODE
/ IF SINGLE OP INST GOTO D0-1 THRU D7-1 DEPENDING ON DESTINATION MODE (INCLUDING JSR)
/ IF BRANCH, CHANGE PC GOTO B-1
/ IF BRANCH, PC UNCHANGED GOTO B2-2
/ IF CLEAR OR SET COND CODE(S) GOTO CCM-1
/ IF INST=RTS GOTO R1-1
/ IF INST=RTI GOTO R2-1
/ IF INST=WAIT GOTO W-1
/ IF INST=HALT GOTO H-1
/ IF INST=RESET GOTO RST-1
/ IF INST=EMT GOTO ET-1
/ IF INST=BPT GOTO BT-1
/ IF INST=IOT GOTO IT-1
/ IF INST=TRAP GOTO T-1
/ IF RESERVED INSTRUCTION (NONE OF THE ABOVE) GOTO RT-1
LOC NXT *SOURCE MODE 0 (REGISTER) GET SOURCE DATA
/GET TO S0-1 FROM F-5 VIA BUT IR DECODE <11:9>=0
201 007 S0-1 B←R[S]; BUT BYTE
/IF BYTE INST GOTO SBE-1 (MUST BE EVEN BYTE)
007 001 S0-2 R[10]←B; BUT DESTINATION
/IF IR<5:3> =0 GOTO D0-1
/ =1 GOTO D1-1
/ =2 GOTO D2-1
/ =3 GOTO D3-1
/ =4 GOTO D4-1
/ =5 GOTO D5-1
/ =6 GOTO D6-1
/ =7 GOTO D7-1
_____________________________________________________________________
LOC NXT *SOURCE MODE 1 (REGISTER DEFERRED) GET SOURCE DATA
/GET TO S1-1 FROM F-5 VIA BUT IR DECODE <11:9>=1
203 244 S1-1 BA←R[S]; DATI; CKOFF; ALBYT
/GET TO S1-2 FROM S2-3 VIA GOTO
/GET TO S1-2 FROM S3-5 VIA GOTO
/GET TO S1-2 FROM S6-5 VIA GOTO
244 007 S1-2 B←UNIBUS DATA; BUT BYTE; GOTO S0-2
/IF ODD BYTE GOTO SBO-1
/IF EVEN BYTE GOTO SBE-1
/IF NOT BYTE FALL THROUGH TO S0-2
_____________________________________________________________________
LOC NXT *SOURCE MODE 2 (AUTO-INCREMENT) GET SOURCE DATA
/GET TO S2-1 FROM F-5 VIA BUT IR DECODE <11:9>=2
205 301 S2-1 BA←R[S]; DATI; ALBYT
301 014 S2-2 B←R[S]+1+BYTE;BAR
/GET TO S2-3 FROM S4-1 VIA GOTO
014 244 S2-3 R[S]←B; CKOFF; GOTO S1-2
_____________________________________________________________________
LOC NXT *SOURCE MODE 3 (AUTO-INC DEFERRED) GET SOURCE DATA
/GET TO S3-1 FROM F-5 VIA BUT IR DECODE <11:9>=3
207 016 S3-1 BA←R[S]; DATI (MUST BE AN EVEN ADDRESS HERE)
016 017 S3-2 B←R[S]+2
/GET TO S3-3 FROM S5-1 VIA GOTO
017 134 S3-3 R[S]←B; CKOFF
/GET TO S3-4 FROM S7-5 VIA GOTO
134 274 S3-4 B←UNIBUS DATA
274 244 S3-5 BA←B; DATI; CKOFF; GOTO S1-2; ALBYT
_____________________________________________________________________
LOC NXT *SOURCE MODE 4 (AUTO DECREMENT) GET SOURCE DATA
/GET TO S4-1 FROM F-5 VIA BUT IR DECODE <11:9>=4
211 014 S4-1 B,BA←R[S]-1-BYTE.BAR; DATI; ENABOVER; GOTO S2-3; ALBYT
_____________________________________________________________________
LOC NXT *SOURCE MODE 5 (AUTO DECREMENT DEFERRED) GET SOURCE DATA
/GET TO S5-1 FROM F-5 VIA BUT IR DECODE <11:9>=5
213 017 S5-1 B,BA←R[S]-2; DATI (ADDR MUST BE EVEN); ENABOVER; GOTO S3-3
_____________________________________________________________________
LOC NXT *SOURCE MODE 6 (INDEXED) GET SOURCE DATA
/GET TO S6-1 FROM F-5 VIA BUT IR DECODE <11:9>=6
215 025 S6-1 BA←PC; DATI(ADDR MUST BE EVEN)
025 026 S6-2 B←PC+2
026 027 S6-3 PC←B; CKOFF
027 030 S6-4 B←UNIBUS DATA
030 244 S6-5 BA←B+R[S]; DATI; CKOFF; GOTO S1-2; ALBYT
_____________________________________________________________________
LOC NXT *SOURCE MODE 7 (INDEXED DEFERRED) GET SOURCE DATA
/GET TO S7-1 FROM F-5 VIA BUT IR DECODE <11:9>=7
217 032 S7-1 BA←PC; DATI(ADDR MUST BE EVEN)
032 033 S7-2 B←PC+2
033 034 S7-3 PC←B; CKOFF
034 035 S7-4 B←UNIBUS DATA
035 134 S7-5 BA←B+R[S]; DATI(ADDR MUST BE EVEN); CKOFF; GOTO S3-4
LOC NXT * SOURCE BYTE ODD
/ GET TO SBO-1 FROM S1-2 VIA BUT BYTE (BYTE INST. AND SOURCE DATA ODD ADDR)
067 346 SBO-1 SHIFT B RIGHT; F SHIFT
346 324 SBO-2 SHIFT B RIGHT; F SHIFT
324 340 SBO-3 SHIFT B RIGHT; F SHIFT
340 361 SBO-4 SHIFT B RIGHT; F SHIFT
361 050 SBO-5 SHIFT B RIGHT; F SHIFT
050 020 SBO-6 SHIFT B RIGHT; F SHIFT
020 052 SBO-7 SHIFT B RIGHT; F SHIFT
052 047 SBO-8 SHIFT B RIGHT; GOTO SBE-1
_____________________________________________________________________
LOC NXT * SOURCE BYTE EVEN
/GET TO SBE-1 FROM SBO-8 VIA GOTO
/GET TO SBE-1 FROM S1-2 VIA BUT BYTE (BYTE INST & SOURCE DATA EVEN ADDR)
/GET TO SBE-1 FROM S0-1 VIA BUT BYTE (BYTE INST)
047 001 SBE-1 R[10]←B SEX; BUT DESTINATION
/ IF IR<5:3> =0 GOTO D0-1
/ =1 GOTO D1-1
/ =2 GOTO D2-1
/ =3 GOTO D3-1
/ =4 GOTO D4-1
/ =5 GOTO D5-1
/ =6 GOTO D6-1
/ =7 GOTO D7-1
---------------------------------------------------------------------
LOC NXT * DEST, MODE 0 (REGISTER), GET DEST DATA, OP, AND REPLACE
/ GET TO D0-1 FROM S0-2 VIA BUT DESTINATION (IR<5:3>=0)
/ GET TO D0-1 FROM SBE-1 VIA BUT DESTINATION (IR<5:3>=0)
101 154 D0-1 B←R[D]; BUT MOVE
/ IF INST=MVE,BAR (OTHER THAN MOVE)AND BYTE GOTO DB0-1
/ IF INST=MOVE AND BYTE GOTO MB-0
/ IF INST=MOVE AND BYTE,BAR GOTO D0-3A
/ IF INST=MOVE,BAR AND BYTE,BALL FALL THRU TO D0-2
157 142 D0-2 R[11]←B; BUT UNARY
/ IF INST=JMP OR JSR GOTO ERT-1 (ILLEGAL INST. TRAP)
/ IF INST=SWAB GOTO SB1-1
/ IF INST=OTHER UNARY(CLR,COM,INC,DEC,NEG,ADC,SBC,TST,ROR,ROL,ASR,ASL)GOTO U1-1
/ GET TO D0-3 FROM U1-1 VIA GOTO
/ GET TO D0-3 FROM D0-1 VIA BUT BYTE (INST=MOVE AND BYTE,BAR)
162 332 D0-3 B←R[10] OP B; BUT NONMOD
/ THERE EXISTS A D03-A WHICH IS IDENTICAL TO D0-3 EXCEPT LOC=155
/ GET TO D0-3A FROM SB1-B VIA GOTO
/ IF NONMOD GOTO B2-2 (BUT SERVICE)
/ IF NOT NONMOD FALL THRU TO D0-4
/ GET TO D0-4 FROM R1-6 VIA GOTO
332 040 D0-4 R[D]←B; BUT SERVICE
/ PRIORITIES ARE LISTED HIGHEST TO LOWEST
/ IF T BIT TRAP GOTO BT-1
/ IF STACK OVERFLOW GOTO ERT1A
/ IF POWERFAIL GOTO PF-1
/ IF BR7 GOTO BG-1
/ IF BR6 GOTO BG-1
/ IF INTERNAL LINE CLOCK GOTO LC-1
/ IF BR5 GOTO BG-1
/ IF BR4 GOTO BG-1
/ IF UART RECEIVE GOTO URTR
/ IF UART TRANSMIT GOTO URTX
/ IF CONSOLE STOP GOTO H-1
/ IF NONE OF THE ABOVE GOTO F-1
LOC NXT * DEST, MODE 1 (REG.DEFERRED) GET DEST DATA, OP, AND REPLACE
LOC NXT * DEST, MODE 2 (AUTO-INC) GET DEST DATA, OP, AND REPLACE
LOC NXT * DEST, MODE 3 (AUTO-INC DEFERRED) GET DEST DATA, OP, AND REPLACE
LOC NXT * DEST, MODE 4 (AUTO-DEC) GET DEST DATA, OP, AND REPLACE
LOC NXT * DEST, MODE 5 (AUTO-DEC DEFERRED) GET DEST DATA, OP, AND REPLACE
LOC NXT * DEST, MODE 6 (INDEXED) GET DEST DATA, OP, AND REPLACE
LOC NXT * DEST, MODE 7 (INDEXED DEFERRED) GET DEST DATA, OP, AND REPLACE
LOC NXT * DESTINATION MODE 0, BYTE
/GET TO DB0-1 FROM D0-1 VIA BUT BYTE (BYTE INST AND MOVE,BAR)
156 144 DB0-1 R[11],B←B SEX; BUT UNARY
/ IF UNARY OTHER THAN JSR, JMP OR SWAB
/(CLR,COM,INC,DEC,NEG,ADC,SBC,TST,ROR,ROL,ASR,ASL) GOTO U3-1
304 040 DB0-3 R[D]<7:0>←B; BUT SERVICE, GOTO F-1
LOC NXT * DESTINATION ODD BYTE
/GET TO D0-1 FROM D1-2 VIA BUT BYTE (BYTE INST AND ODD ADDR)
270 123 D0-1 SHIFT B RIGHT; F SHIFT
123 124 D0-2 SHIFT B RIGHT; F SHIFT
124 125 D0-3 SHIFT B RIGHT; F SHIFT
125 126 D0-4 SHIFT B RIGHT; F SHIFT
126 127 D0-5 SHIFT B RIGHT; F SHIFT
127 130 D0-6 SHIFT B RIGHT; F SHIFT
130 131 D0-7 SHIFT B RIGHT; F SHIFT
131 132 D0-8 SHIFT B RIGHT
132 145 D0-9 R[11],B_B SEX; BUT UNARY
LOC NXT * DESTINATION EVEN BYTE
LOC NXT * BINARY OPERATORS GET SINGLE OPERAND B AND B[10]
LOC NXT * MOVB INST
LOC NXT * BRANCH, CHANGE PC
LOC NXT * CONDITION CODE MASK (FOR BOTH SET AND CLEAR)
LOC NXT * CLEAR CONDITION CODES
LOC NXT * SET CONDITION CODES
LOC NXT * SWAB, MODE 0
LOC NXT * SWAB, NOT MODE 0
LOC NXT * JMP
/GET TO J1-1 FROM D1-1 VIA BUT JSRMP (INST=JMP)
/GET TO J1-1 FROM D2-3 VIA BUT JSRMP (INST=JMP)
/GET TO J1-1 FROM D3-5 VIA BUT JSRMP (INST=JMP)
/GET TO J1-1 FROM D6-5 VIA BUT JSRMP (INST=JMP)
204 260 J1-1 NOP
/J1-1 MUST BE A NOP BECAUSE FOLLOWING A CKOFF, THE AMX WILL
/BE FORCED TO TAKE DATA FROM THE UNIBUS.
260 040 J1-2 PC_B; BUT SERVICE
LOC NXT * JSR
/GET TO J2-1 FROM D1-1 VIA BUT JSRMP (INST=JSR)
/GET TO J2-1 FROM D2-3 VIA BUT JSRMP (INST=JSR)
/GET TO J2-1 FROM D3-5 VIA BUT JSRMP (INST=JSR)
/GET TO J2-1 FROM D6-5 VIA BUT JSRMP (INST=JSR)
212 261 J2-1 NOP
/J2-1 MUST BE A NOP BECAUSE FOLLOWING A CKOFF, THE AMX WILL
/BE FORCED TO TAKE DATA FROM THE UNIBUS.
261 262 J2-1A R[11]_B
262 214 J2-2 B,BA←R[6]-2; ENABOVER
214 206 J2-3 R[6]←B; CKOFF; DATO
206 216 J2-4 DRIVERS_R[S]
216 263 J2-5 B9 ← PC
263 264 J2-6 R[S]_B
264 265 J2-7 B_R[11]
265 040 J2-8 PC_B; BUT SERVICE
LOC NXT * RTS
/GET TO R1-1 FROM F-5 VIA BUT IR DECODE (INST=RTS)
005 221 R1-1 BA←R[6]; DATI
221 222 R1-2 B←R[6]+2
222 223 R1-3 R[6]←B
223 224 R1-4 B←R[D]
224 225 R1-5 PC←B; CKOFF
225 332 R1-6 B←UNIBUS DATA; GOTO D0-4
LOC NXT * RTI
/GET TO R2-1 FROM F-5 VIA BUT IR DECODE (INST=RTI)
227 230 R2-1 BA←R[6]; DATI
230 231 R2-2 B←R[6]+2
231 232 R2-3 R[6]←B; CKOFF
232 234 R2-4 PC←UNIBUS DATA
/THERE IS NO R2-5 ANYMORE.
234 235 R2-6 BA←R[6]; DATI
235 236 R2-7 B←R[6]+2
236 237 R2-8 R[6]←B; CKOFF
237 305 R2-9 PS←UNIBUS DATA; GOTO B2-2 (BUT SERVICE)
LOC NXT * WAIT
/GET TO W-1 FROM F-5 VIA BUT IR DECODE (INST=WAIT)
/GET TO W-1 FROM W-1 VIA GOTO IF BUT SERVICE IS FALSE
063 040 W-1 BUT SERVICE
LOC NXT * HALT
LOC NXT * EMT TRAP (VECTOR LOC=30)
LOC NXT * BREAKPOINT TRAP (VECTOR LOC=14) AND T BIT TRACE TRAP
LOC NXT * IOT (VECTOR LOC=20)
LOC NXT * TRAP (VECTOR LOC=34)
LOC NXT * RESERVED INST TRAP (VECTOR LOC=10)
LOC NXT * ERROR TRAP: BUS ERROR, STACK OVERFLOW, ILLEGAL INST(VECTOR LOC=4)
LOC NXT * CONSOLE START SWITCH
LOC NXT * CONSOLE EXAMINE SWITCH - FIRST TIME (DON'T INC P[17])
LOC NXT * CONSOLE EXAMINE SWITCH - OTHER TIMES (INC P[17])
LOC NXT * CONSOLE DEPOSIT SWITCH - FIRST TIME (DON'T INC P[17])
LOC NXT * CONSOLE DEPOSIT SWITCH - FIRST TIME (DON'T INC P[17])
LOC NXT * CONSOLE DEPOSIT SWITCH - OTHER TIMES (INC P[17])
LOC NXT * CONSOLE CONTINUE SWITCH
LOC NXT * CONSOLE LOAD SWITCH
LOC NXT * POWER FAIL (VECTOR LOC=24)
LOC NXT * RESTART FROM POWER FAIL (VECTOR LOC=24)
LOC NXT * INTERRUPT SERVICING
LOC NXT * BUS GRANT SERVICE
LOC NXT * NOP - BRANCH CONDITION NOT TRUE (PC UNCHANGED)
LOC NXT * RESET
LOC NXT * DOUBLE BUS ERROR, GOTO HALT
LOC NXT * UART XMIT (VECTOR LOC 64)
LOC NXT * UART RECEIVE (VECTOR LOC 60)
LOC NXT * LINE CLOCK (VECTOR LOC 100)